package com.kgc.onlineLife.mapper;

import com.kgc.onlineLife.bean.Category;
import com.kgc.onlineLife.bean.Product;
import com.kgc.onlineLife.bean.User;
import com.kgc.onlineLife.util.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Created On : 2022/4/15.
 * <p>
 * Author     : 张冲
 * <p>
 * Description: ProductMapper
 */
@Repository
public interface ProductMapper {
    /**
     * 查商品分类
     * @param cid
     * @return
     */
    List<Product> productList(int cid);

    /**
     * 查商品详情
     * @param id
     * @return
     */
    Product getProductDetail(Integer id);

    /**
     * 详情页查商家
     * @param bid
     * @return
     */
    User getUser(Integer bid);

    /**
     * 详情也查分类
     * @param cid
     * @return
     */
    Category getCategories(Integer cid);

    /**
     * 根据搜索框内容模糊查询
     * @param searchName
     * @return
     */
    List<Product> selectProductsBySearchName(@Param("searchName") String searchName);

    /**
     * 统计根据搜索框内容模糊查询的结果条数
     * @param searchName
     * @return
     */
    int selectTotalBySearchName(@Param("searchName") String searchName);

    /**
     * 查询每个分类下的结果条数
     * @param cid
     * @return
     */
    int selectTotalByCid(Integer cid);

    Product selectProductById(Integer id);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.Integer]
     * @return : java.util.List<com.kgc.onlineLife.bean.Product>
     * @description : 查询该分类下正在上线的商品信息
     */
    List<Product> selectOnlineProductByCid(@Param("cid") Integer cid);

    /**
     * @author : nainai
     * @date   : 2022/4/16
     * @param  : [java.lang.Integer]
     * @return : java.util.List<com.kgc.onlineLife.bean.Product>
     * @description : 查询所有商品信息，带分页
     */
    List<Product> selectProducts(Page page);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.String]
     * @return : java.util.List<com.kgc.onlineLife.bean.Product>
     * @description : 根据商品名，模糊查询商品详情
     */
    List<Product> selectProductsByName(@Param("name") String name);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.Integer]
     * @return : int
     * @description : 根据id删除商品
     */
    int deleteProductById(@Param("id") Integer id);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.Integer]
     * @return : int
     * @description : 根据商品id，修改商品上线状态
     */
    int updateProductOnlineById(@Param("id") Integer id, @Param("status") Integer status);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [java.lang.Integer]
     * @return : com.kgc.onlineLife.bean.Product
     * @description : 根据id查询商品信息
     */
    Product selectProductByIdM(@Param("id") Integer id);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [com.kgc.onlineLife.bean.Product]
     * @return : int
     * @description : 添加商品
     */
    int insertProduct(Product product);

    /**
     * @author : nainai
     * @date   : 2022/4/17
     * @param  : [com.kgc.onlineLife.bean.Product]
     * @return : int
     * @description : 根据id修改商品信息
     */
    int updateProductById(Product product);
}
